<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			console.log(Object.prototype);
			
			// 给Object类的原型增加Symbol.iterator
			console.log(Symbol.iterator);
			
			//  给Object类的原型上增加Symbol.iterator属性，对应的值是函数 
			Object.prototype[Symbol.iterator] = function(){
				// for-of进行迭代这个函数就被调用，this->当前迭代这个对象
				
				// 将当前迭代对象的属性值以数组形式返回
				let datas = Object.values(this);
				// 自定义下标
				let index = 0;
				
				//  这个函数调用返回了一个对象
				return {
					// 在这个对象上有next属性，对应的值是一个函数  
					next:function(){
						if(index >= datas.length){
							return {value:datas[index++],done:true};
						}else{
							return {value:datas[index++],done:false};
						}
					}
				}
			}
			
			
			
			let obj = {name:"哈哈",age:100};
			// console.log(obj[Symbol.iterator]);
			
			// let iter = obj[Symbol.iterator]();
			// console.log(iter);
			
			// console.log(iter.next());
			// console.log(iter.next());
			// console.log(iter.next());
			
			
			for(let val of obj){
				console.log(val);
			}
			
			
		
		</script>
	</body>
</html>
